<!--
 * @Author: 汪军 624473119@qq.com
 * @Date: 2023-10-22 13:13:43
 * @LastEditors: 汪军 624473119@qq.com
 * @LastEditTime: 2023-11-14 10:42:38
 * @FilePath: \app-formwork\src\App.vue
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
<script>
import { loginApi } from "@/api/login";
import compareVersion from "@/utils/version";
export default {
  data() {
    return {
      versionInfo: {}
    };
  },
  onLaunch: function () {
    const self = this;
    // #ifdef MP-WEIXIN
    self.autoUpdate();
    // #endif
    // #ifdef APP-PLUS
    plus.runtime.getProperty(plus.runtime.appid, (wgtinfo) => {
      self.updateVersion(wgtinfo.version);
    });
    // #endif
  },
  methods: {
    // 小程序更新
    autoUpdate: function () {
      if (uni.canIUse("getUpdateManager")) {
        // 检查小程序是否有新版本发布
        const updateManager = uni.getUpdateManager();
        updateManager.onCheckForUpdate(function (res) {
          // 请求完新版本信息的回调
          if (res.hasUpdate) {
            // 小程序有新版本，则静默下载新版本，做好更新准备
            updateManager.onUpdateReady(function () {
              uni.showModal({
                title: "更新提示",
                content: "新版本已经准备好，是否重启应用？",
                success: function (res) {
                  if (res.confirm) {
                    // 新的版本已经下载好，调用applyUpdate应用新版本并重启
                    updateManager.applyUpdate();
                  } else if (res.cancel) {
                    // 不应用
                  }
                }
              });
            });

            updateManager.onUpdateFailed(function () {
              // 新的版本下载失败
              uni.showModal({
                title: "已经有新版本了哟~",
                content: "新版本已经上线啦~，请您删除当前小程序，重新搜索打开哟~"
              });
            });
          }
        });
      } else {
        // 如果希望用户在最新版本的客户端上体验您的小程序，可以这样子提示
        uni.showModal({
          title: "提示",
          content: "当前微信版本过低，无法使用该功能，请升级到最新微信版本后重试。"
        });
      }
    },
    // app端更新
    async updateVersion(version) {
      const res = await loginApi.updateApp();
      this.versionInfo = res.data;
      // 是否开启热更新(线上版本大于本地版本更新)
      if (this.versionInfo.status == 0) return;
      if (compareVersion(this.versionInfo.vs_see, version) > 0) {
        this.downWgt(this.versionInfo.wgt_url);
      }
    },
    downWgt(wgtUrl) {
      const that = this;
      plus.nativeUI.showWaiting("正在下载更新包");
      plus.downloader
        .createDownload(
          wgtUrl,
          {
            filename: "_doc/update/"
          },
          function (d, status) {
            if (status == 200) {
              that.installWgt(d.filename); // 安装wgt包
            } else {
              plus.nativeUI.alert("安装失败" + status);
              setTimeout(() => {
                let platform = uni.getSystemInfoSync().platform;
                if (platform == "android") {
                  // 该应用android更新版本下载地址
                  plus.runtime.openURL(encodeURI(that.versionInfo.apk_url));
                } else {
                  // 该应用ios更新版本下载地址
                  plus.runtime.openURL(encodeURI(that.versionInfo.app_store));
                }
              }, 1000);
            }
            plus.nativeUI.closeWaiting();
          }
        )
        .start();
    },
    installWgt(path) {
      const that = this;
      plus.nativeUI.showWaiting("正在安装中");
      plus.runtime.install(
        path,
        {},
        function () {
          plus.nativeUI.closeWaiting();
          plus.nativeUI.alert(
            "更新完成",
            function () {
              plus.runtime.restart();
            },
            "",
            "确定"
          );
        },
        function (e) {
          plus.nativeUI.closeWaiting();
          plus.nativeUI.alert("更新失败请稍后尝试");
          let platform = uni.getSystemInfoSync().platform;
          if (platform == "android") {
            // 该应用android更新版本下载地址
            plus.runtime.openURL(encodeURI(that.versionInfo.apk_url));
          } else {
            // 该应用ios更新版本下载地址
            plus.runtime.openURL(encodeURI(that.versionInfo.app_store));
          }
        }
      );
    }
  }
};
</script>

<style lang="scss">
/*每个页面公共css */
@import "uview-plus/index.scss";
@import url("./styles/index.scss");
page {
  box-sizing: border-box;
}
@for $i from 12 through 80 {
  .f-#{$i} {
    font-size: #{$i}rpx;
  }

  .f-#{$i}-M {
    font-weight: 500;
    font-size: #{$i}rpx;
  }

  .f-#{$i}-B {
    font-weight: bold;
    font-size: #{$i}rpx;
  }
}
@for $i from 12 through 80 {
  .px-#{$i} {
    padding-left: #{$i}rpx;
    padding-right: #{$i}rpx;
  }

  .py-#{$i} {
    padding-top: #{$i}rpx;
    padding-bottom: #{$i}rpx;
  }

  .pl-#{$i} {
    padding-left: #{$i}rpx;
  }

  .pr-#{$i} {
    padding-right: #{$i}rpx;
  }

  .pt-#{$i} {
    padding-top: #{$i}rpx;
  }

  .pb-#{$i} {
    padding-bottom: #{$i}rpx;
  }

  .mx-#{$i} {
    margin-left: #{$i}rpx;
    margin-right: #{$i}rpx;
  }

  .my-#{$i} {
    margin-top: #{$i}rpx;
    margin-bottom: #{$i}rpx;
  }

  .ml-#{$i} {
    margin-left: #{$i}rpx;
  }

  .mr-#{$i} {
    margin-right: #{$i}rpx;
  }

  .mt-#{$i} {
    margin-top: #{$i}rpx;
  }

  .mb-#{$i} {
    margin-bottom: #{$i}rpx;
  }
}
</style>
